package com.tangkun.environment.utils;

import android.content.Context;
import android.content.SharedPreferences;

import java.util.Iterator;
import java.util.Map;
import java.util.Set;

/**
 * Created Time: 2017/3/18.
 * <p/>
 * Author:tangkun
 * <p/>
 * 功能：SharedPreferences运用
 */
public class SharePrefercesUtils {
    public static SharedPreferences mPref;

    /**
     * 获取当前APP的share
     */
    public static SharedPreferences getShare(Context context) {
        mPref = context.getSharedPreferences("sp_environment", context.MODE_PRIVATE);
        return mPref;
    }

    /**
     * 获取本地存储的token
     */
    public static String getToken(Context context) {
        return getShare(context).getString("token", "");
    }

    /**
     * 保存refresh_token到本地文件
     *
     * @param context
     * @param token
     */
    public static void setToken(Context context, String token) {
        getShare(context).edit().putString("token", token).commit();
    }

    /**
     * 获取用户是否登录
     */
    public static boolean getLoginStatus(Context mContext) {
        return getShare(mContext).getBoolean("islogin", false);
    }

    /**
     * 保存用户是否登录
     *
     * @param context
     * @param isLogin true已登录 false未登录
     */
    public static void setLoginStatus(Context context, boolean isLogin) {
        getShare(context).edit().putBoolean("islogin", isLogin).commit();
    }

    /**
     * 获取用户名
     */
    public static String getUserName(Context mContext) {
        return getShare(mContext).getString("username", "");
    }

    /**
     * 保存用户名
     *
     * @param context
     * @param userName 用户名／手机号
     */
    public static void setUserName(Context context, String userName) {
        getShare(context).edit().putString("username", userName).commit();
    }

    /**
     * 获取用户密码
     */
    public static String getPassword(Context mContext) {
        return getShare(mContext).getString("password", "");
    }

    /**
     * 保存密码
     *
     * @param context
     * @param password 用户密码
     */
    public static void setPassword(Context context, String password) {
        getShare(context).edit().putString("password", password).commit();
    }

    /**
     * 获取搜索历史
     */
    public static String getSearchHistory(Context mContext) {
        return getShare(mContext).getString("searchHistory", "");
    }

    /**
     * 保存搜索历史
     *
     * @param context
     * @param searchHistory 搜索历史
     */
    public static void setSearchHistory(Context context, String searchHistory) {
        getShare(context).edit().putString("searchHistory", searchHistory).commit();
    }

    /**
     * 获取绑定状态
     */
    public static boolean getBindStatus(Context mContext) {
        return getShare(mContext).getBoolean("bindStatus", false);
    }

    /**
     * 保存绑定状态
     *
     * @param context
     * @param bindStatus 绑定状态 true 已绑定 false 未绑定
     */
    public static void setBindStatus(Context context, boolean bindStatus) {
        getShare(context).edit().putBoolean("bindStatus", bindStatus).commit();
    }

    /**
     * 获取纬度
     */
    public static String getLatitude(Context mContext) {
        return getShare(mContext).getString("latitude", "");
    }

    /**
     * 保存纬度
     *
     * @param context
     * @param latitude 纬度
     */
    public static void setLatitude(Context context, String latitude) {
        getShare(context).edit().putString("latitude", latitude).commit();
    }

    /**
     * 获取经度
     */
    public static String getLongitude(Context mContext) {
        return getShare(mContext).getString("longitude", "");
    }

    /**
     * 保存经度
     *
     * @param context
     * @param longitude 经度
     */
    public static void setLongitude(Context context, String longitude) {
        getShare(context).edit().putString("longitude", longitude).commit();
    }


    /**
     * 清除SharedPreferences中的数据
     */
    public static void clear() {
        Map<String, ?> all = mPref.getAll();
        Set<String> keys = all.keySet();
        Iterator<String> keys_iter = keys.iterator();
        SharedPreferences.Editor edit = mPref.edit();
        while (keys_iter.hasNext()) {
            String key = keys_iter.next();
            // 筛选哪些信息不用清除 用户名
            if ("username".equals(key)) {
                continue;
            }
            edit.remove(key);
        }
        edit.commit();
    }

}
